Öncelikle diğer konuda eskiden yazdığım fonk.java vardı belki işine yarar diye koyayım linki buraya.
https://gelecegiyazanlar.turkcell.com.tr/soru/uzak-veritabani-ile-calisma
Şuan o eski koda göre yeni şeyler keşvettim ve Türkçe kaynak olmadığı için burayada belirmek istiyorum.
Burada Hem yazı göndermeyi gösteriyorum hemde base64 olarak resim göndermeyi gösteriyorum.
fonkisyonlar verdiğim linkte var. gerekirse ordan alırsınız.
String ercnt= "";
Bitmap bmpGrnm;
String imgbase64 = "";
private JSONObject post(String data[], String dataName[]){
try{
String postUrl = "http://www.siteAdı.com/mobil/query/msjgndr.php";
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 100000);
HttpConnectionParams.setSoTimeout(httpParameters, 100000);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(postUrl);
httpPost.setParams(httpParameters);
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair(dataName[1], data[1])); // diziye mesaj adlı mesaj verisini koyuyor. Yani burda mesaj bizim php dosyasından $_POST["mesaj"] olarak çekiceğimiz bilgi oluyor.
// Örnek urlParameters.add(new BasicNameValuePair("mesaj", "blablalba"));
imgbase64 = "";
bmpGrnm = ((BitmapDrawable) imgpreview.getDrawable()).getBitmap(); // resim bitmap dönüştürülüyor
if (bmpGrnm != null)
imgbase64 = Base64.encodeToString(fnk.getBytesFromBitmap(bmpGrnm), Base64.DEFAULT); // Resmin Base64string alınıyor.
urlParameters.add(new BasicNameValuePair("resim", imgbase64)); // Resmin base64 string i gönderilmek üzere diziye ekleniyor.
httpPost.setEntity(new UrlEncodedFormEntity(urlParameters)); // bilgiler httpPost aktarılıyor
// execute HTTP post request
HttpResponse response = httpClient.execute(httpPost); // php dosyasına bilgiler post ediliyor.
HttpEntity resEntity = response.getEntity(); // gelen bilgi alınıyor
if (resEntity != null) {
String responseData = EntityUtils.toString(resEntity).trim(); // gelen bilgi okunuyor.
return new JSONObject(responseData); // jsonobject atılıp geri bilgiyi jsonobject olarak geri dönderiyor.
}
} catch (NullPointerException e) {
e.printStackTrace();
ercnt = e.toString();
return null;
} catch (Exception e) {
e.printStackTrace();
ercnt = e.toString();
return null;
}
return null;
}
public class PostDataAsyncTask extends AsyncTask<String, String, String> {
protected void onPreExecute() {
super.onPreExecute();
}
String snc;
String msg;
JSONObject json;
@Override
protected String doInBackground(String... strings) {
String[] dataName = null;
if (strings[0].equals("strimg")) { //buradaki protokol iğer yapıcağımız postları ayırmak için kullanılmıştır. Protokol olmak zorundadır. İsterseniz kendinize farklı bir kontrolde oluştrabilirsiniz ben böyle yaptım.
dataName = new String[]{"protokol", "mesaj"};
}
json = post(strings, dataName); // strings gönderilecek bilgiler dataName php de alınacak bilgiler
if(json != null) {
try {
if (strings[0].equals("strimg")) { // En iyi kontrol yapısı oluşturma.
snc = json.getString("sonuc");
msg = json.getString("sonucmesaji");
} else
return "seçim yok.";
return strings[0]; // kontrol edilecek değer.
} catch (NullPointerException e) {
e.printStackTrace();
ercnt = e.toString();
} catch (Exception e) {
e.printStackTrace();
ercnt = e.toString();
}
return "try json error";
}
else
return "null";
}
@Override
protected void onPostExecute(String cvp) {
if(cvp.equals("seçim yok"))
fnk.msgFragmentBox("Durum","Seçim Yanlış.","","","Tamam");
else if(cvp.equals("try json error"))
fnk.msgFragmentBox("Durum","try json error:\n"+ ercnt,"","","Tamam");
else if(cvp.equals("null"))
fnk.msgFragmentBox("Durum","Null:\n"+ ercnt,"","","Tamam");
else if(cvp.equals("strimg"))
{
if (snc.equals("yes")) {
// başarıyla mesaj gönderildi
} else {
// mesaj gönderilirken hata oluştu msg değişkeni hata mesajını verir
}
}
}
}
Kullanımı.
String[] data = {"strimg", "İlk Mesajım"};
new PostDataAsyncTask().execute(data);
PHP Dosyası
<?php
include "../ayarlar.php";
$msj = $_POST["mesaj"];
$rsm = $_POST["resim"];
if($msj != "" && $rsm != "")
{
$query = $db->prepare("INSERT INTO mesajlar SET
mesaj = ?, resim = ?");
$insert = $query->execute(array(
$msj, $rsm
));
if ( $insert ){ // mesaj başarıyla eklendi.
$cevap = array('sonuc' => "yes", 'sonucmesaji' => "Başarıyla Mesaj Gönderildi.");
}
else
$cevap = array('sonuc' => "no", 'sonucmesaji' => "Mesaj eklenirken hata");
}
else
$cevap = array('sonuc' => "no", 'sonucmesaji' => "Gerekli Yerleri Doldurunuz.");
echo json_encode($cevap);
?>